﻿using FluentNHibernate.Mapping;
using Entidades;
using Persistencia.Mappings.Extensions;

namespace Persistencia.Mappings
{
    /// <summary>
    /// Mapeo para la clase Estudio
    /// </summary>
    public class EstudioMap : ClassMap<Estudio>
    {
        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public EstudioMap()
        {
            Table("ESTUDIO");
            
            this.DefaultMap();

            Map(x => x.Nombre).Column("Nombre");
            Map(x => x.Descripcion).Column("Descripcion");
            Map(x => x.FechaInicio).Column("FechaInicio");
            HasMany<EstudioDireccion>(x => x.Direcciones)
                .Table("ESTUDIO_DIRECCION")
                .Inverse()
                .KeyColumn("Id_Estudio")
                .Cascade.AllDeleteOrphan()
                .LazyLoad();
            HasMany<EstudioTelefono>(x => x.Telefonos)
                .Table("ESTUDIO_TELEFONO")
                .Inverse()
                .KeyColumn("Id_Estudio")
                .Cascade.AllDeleteOrphan()
                .LazyLoad();
            HasOne<EstudioContacto>(x => x.Contacto)
                //.Table("ESTUDIO_CONTACTO")
                //.Inverse()
                //.KeyColumn("Id_Estudio")
                //.Cascade.AllDeleteOrphan()
                .LazyLoad();     
            HasOne<EstudioDataFiscal>(x => x.DataFiscal)
                //.Table("ESTUDIO_DATA_FISCAL")
                //.Inverse()
                //.KeyColumn("Id_Estudio")
                //.Cascade.AllDeleteOrphan()
                .LazyLoad();    
            HasOne<EstudioEmail>(x => x.Emails)
                //.Table("ESTUDIO_EMAIL")
                //.Inverse()
                //.KeyColumn("Id_Estudio")
                //.Cascade.AllDeleteOrphan()
                .LazyLoad();    
        }
    }
}